home *** CD-ROM | disk | FTP | other *** search
- //*************************************************************************//
- // Filename: FreshLocale.cpp
- // Autor: Christian Taulien of Strange Intelligence
- // Purpose: common localizing Localizing FRESH-Software by SI
- // Creation: 31. März 1998
- //*************************************************************************//
-
- #include "global.h"
- #include "FreshLocale.h"
-
- #include <string.h>
-
- #include <clib/locale_protos.h>
- #include <clib/utility_protos.h>
-
- CatalogC *glob_poCatalog = NULL;
-
- CatalogC::CatalogC(char *arg_sName, ULONG arg_ulVersion /*= NULL*/, struct Locale *arg_poLocale /*= NULL*/)
- /*S*/
- {
- TRACE("Entry");
- m_poCatalog = NULL;
- openCatalog(arg_sName, arg_poLocale,
- OC_Version, arg_ulVersion,
- TAG_DONE);
- }
- /*E*/
- CatalogC::CatalogC(char *arg_sName, struct Locale *arg_poLocale, ULONG arg_eTags ...)
- /*S*/
- {
- TRACE("Entry");
- m_poCatalog = NULL;
- openCatalog(arg_sName, arg_poLocale, (struct TagItem *) &arg_eTags);
- }
- /*E*/
- CatalogC::~CatalogC()
- /*S*/
- {
- TRACE("Entry");
- closeCatalog();
- }
- /*E*/
- BOOL CatalogC::openCatalog(char *arg_sName, struct Locale *arg_poLocale /*= NULL*/, struct TagItem *arg_poTagList /*= NULL*/)
- /*S*/
- {
- TRACE("Entry");
- // Schließen, wenn Katalog noch offen
- closeCatalog();
-
- // einfach versuchen den catalog zu öffnen
- m_poCatalog = OpenCatalogA(arg_poLocale, arg_sName, arg_poTagList);
- return isOpen();
- }
- /*E*/
- BOOL CatalogC::openCatalog(char *arg_sName, struct Locale *arg_poLocale, ULONG arg_eTags ...)
- /*S*/
- {
- TRACE("Entry");
- // rufe die richtige methode auf
- return openCatalog(arg_sName, arg_poLocale, (struct TagItem *) &arg_eTags);
- }
- /*E*/
- void CatalogC::closeCatalog()
- /*S*/
- {
- TRACE("Entry");
- // wenn Catalog überhaupt offen
- if (m_poCatalog)
- {
- CloseCatalog(m_poCatalog);
- m_poCatalog = NULL;
- } // if
- }
- /*E*/
- char CatalogC::getShortCut(int arg_iStringNum)
- /*S*/
- {
- TRACE("Entry");
- char *sString = getString(arg_iStringNum);
- char cShortCut = '\0';
-
- // wenn string gefunden
- if (sString)
- {
- int iLen = strlen(sString);
- for (int i=0; i<iLen; ++i)
- {
- // wenn underscore gefunden und noch min. ein zeichen danach
- // vorhanden
- if (sString[i] == '_' && (i < iLen-1))
- {
- // shortcut gefunden. Schleife verlassen
- cShortCut = sString[i+1];
- break;
- } // if
- } // for
- } // if
-
- return cShortCut;
- }
- /*E*/
- char CatalogC::getShortCutLowerCase(int arg_iStringNum)
- /*S*/
- {
- TRACE("Entry");
- return ToLower(getShortCut(arg_iStringNum));
- }
- /*E*/
- unsigned char *CatalogC::getString(int arg_iStringNum)
- /*S*/
- {
- TRACE("Entry");
- // wenn ungültiger string
- if (!(SIFC_BETWEEN(arg_iStringNum, FIRST_POSSIBLE_TEXT, LAST_POSSIBLE_TEXT)
- || SIFC_BETWEEN(arg_iStringNum, FIRST_POSSIBLE_ERROR, LAST_POSSIBLE_ERROR)))
- {
- arg_iStringNum = T_UNDEFINED;
- } // if
-
- // wenn catalog offen
- if (m_poCatalog)
- {
- return GetCatalogStr(m_poCatalog, arg_iStringNum, glob_asInternCatalog[arg_iStringNum]);
- }
- else
- {
- return glob_asInternCatalog[arg_iStringNum];
- } // if
- }
- /*E*/
-
-